# 自定义过滤器 实现索引格式转换
import functools


from flask import session, abort, current_app, g

from info.utils.models import User


def func_index_convert(value):  # value = 4

    index_dict = {1: "first", 2: "second", 3: "third"}

    return index_dict.get(value, "")


# 获取用户的登录信息
def user_login_data(f):  # f = demo1

    @functools.wraps(f)  # 可以让被装饰的函数使用指定函数的信息(名称__name__, 函数文档__doc__)
    def wrappers(*args, **kwargs):

        # 获取session中的user_id
        user_id = session.get("user_id")

        # 根据 `user_id` 可以取出 `用户的数据`
        user = None
        if user_id:  # 用户已登录

            try:
                user = User.query.get(user_id)
            except BaseException as e:
                current_app.logger.error(e)
                return abort(500)

        g.user = user
        # # 获取函数的名称
        # print(wrappers.__name__)

        return f(*args, **kwargs)

    return wrappers


# 封装七牛云 文件上传工具
def upload_file(data):
    """
    文件上传
    :param data: 需要上传的文件数据
    :return: 文件名
    """

    import qiniu
    access_key = "kJ8wVO7lmFGsdvtI5M7eQDEJ1eT3Vrygb4SmR00E"  # 秘钥
    secret_key = "rGwHyAvnlLK7rU4htRpNYzpuz0OHJKzX2O1LWTNl"
    bucket_name = "infonews23"  # 空间名称

    q = qiniu.Auth(access_key, secret_key)
    key = None  # 设置文件名, 如果设置为None, 会生成随机文件名

    token = q.upload_token(bucket_name)
    ret, info = qiniu.put_data(token, key, data)
    if ret is not None:  # 上传成功, 返回文件名
        file_name = ret.get("key")
        return file_name

    else:  # 上传失败
        raise BaseException(info)



